﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Data.SQLite;
using KProject.Model;

namespace KProject.DAL
{
    static class ConcursosDAL
    {
        public static List<Concurso> List()
        {
            SQLiteCommand cmd = new SQLiteCommand("select * from Concurso");

            return CommonDAL.List(cmd, dr => new Concurso()
            {
                Id = int.Parse(dr["idConcurso"].ToString()),
                Nome = dr["nomeConcurso"].ToString(),
                Data = Convert.ToDateTime(dr["dataConcurso"].ToString()),
                Cidade = dr["cidadeConcurso"].ToString()
            });
        }

        public static int Insert(Concurso concurso)
        {
            List<SQLiteCommand> cmds = new List<SQLiteCommand>();

            SQLiteCommand cmd = new SQLiteCommand(@"insert into Concurso (nomeConcurso, dataConcurso, cidadeConcurso)
                                                    values (@nomeConcurso, @dataConcurso, @cidadeConcurso);");
            cmd.Parameters.Add("@nomeConcurso", DbType.String, 100).Value = concurso.Nome;
            cmd.Parameters.Add("@dataConcurso", DbType.DateTime).Value = concurso.Data;
            cmd.Parameters.Add("@cidadeConcurso", DbType.String, 50).Value = concurso.Cidade;
            cmds.Add(cmd);

            cmd = new SQLiteCommand("select last_insert_rowid() from Concurso;");
            cmds.Add(cmd);

            return Convert.ToInt32(CommonDAL.ExecuteTransaction(cmds, 1));
        }

        public static int Update(Concurso concurso)
        {
            SQLiteCommand cmd = new SQLiteCommand(@"update Concurso set
                                                    nomeConcurso = @nomeConcurso,
                                                    dataConcurso = @dataConcurso,
                                                    cidadeConcurso = @cidadeConcurso
                                                    where idConcurso = @idConcurso");
            cmd.Parameters.Add("@nomeConcurso", DbType.String, 100).Value = concurso.Nome;
            cmd.Parameters.Add("@dataConcurso", DbType.DateTime).Value = concurso.Data;
            cmd.Parameters.Add("@cidadeConcurso", DbType.String, 50).Value = concurso.Cidade;
            cmd.Parameters.Add("@idConcurso", DbType.Int32).Value = concurso.Id;

            return CommonDAL.ExecuteNonQuery(cmd);
        }
    }
}
